package com.alibaba.travel.member.service;

import com.alibaba.travel.common.utils.PageUtils;
import com.alibaba.travel.common.utils.R;
import com.alibaba.travel.member.dto.LoginPhoneInfo;
import com.alibaba.travel.member.dto.LoginUsernameInfo;
import com.alibaba.travel.member.dto.RegisterInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.alibaba.travel.member.entity.UserEntity;

import java.util.Map;

/**
 * 用户信息表
 *
 * @author wherezy
 * @email wherezy@tom.com
 * @date 2023-02-23 15:05:36
 */
public interface UserService extends IService<UserEntity> {

    PageUtils queryPage(Map<String, Object> params);


    /**
     * 用户注册接口
     * @param registerInfo
     * @return
     */
    R register(RegisterInfo registerInfo);

    /**
     * 用户账号密码登录接口
     * @param loginUsernameInfo
     * @return
     */
    R loginWithUsername(LoginUsernameInfo loginUsernameInfo);

    /**
     * 用户手机号登录接口
     * @param loginPhoneInfo
     * @return
     */
    R loginWithPhone(LoginPhoneInfo loginPhoneInfo);

    /**
     * 判断用户名和密码是否规范
     * @param username
     * @param password
     * @return
     */
    boolean judgeInfo(String username,String password);


    /**
     * 向手机号发送验证码
     * @param loginPhoneInfo
     * @return
     */
    R sendMsg(LoginPhoneInfo loginPhoneInfo);

    /**
     * 用户注销
     * @return
     */
    R logout();

    /**
     * 更新redis和数据库
     * @param user
     * @return
     */
    R updateDataAndCache(UserEntity user);
}

